#ifndef AUDIOINPUT_H
#define AUDIOINPUT_H

#include <QAudioFormat>
#include <QIODevice>
#include <QQueue> // Qt没有循环缓存、FIFO，QBuffer达不到要求，先用QQueue顶一下
#include <QTimer>

/**
 * \brief Qt麦克风数据的输出必须走虚类QIODevice
 */
class AudioInput : public QIODevice
{
    Q_OBJECT

public:
    AudioInput(const QAudioFormat &format);
    ~AudioInput();
    qint64 readData(char *data, qint64 maxlen) override;
    qint64 writeData(const char *data, qint64 len) override;

private slots:
    void AudioFrameAdjust();

private:
    const QAudioFormat m_format;
    QTimer m_task_timer; // 音频帧大小的调整用
    QQueue<unsigned char> m_queue;
    char m_audiodata[4096];
};

#endif // AUDIOINPUT_H
